package demo3;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;


/**
 * 测试注解
 */
public class AnnoDemo {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException {
        // 1.通过反射获取UserTest类的字节码文件对象
        Class<?> clazz = Class.forName("demo3.UseTest");
        // 创建对象
        UseTest userTest = (UseTest) clazz.newInstance();
        // 2.通过反射获取这个类里面所有的方法对象
        Method[] methods = clazz.getDeclaredMethods();
        // 3.遍历数组，得到每一个方法对象
        for (Method method : methods) {
            // isAnnotationPresent(class<?extends Annotation> annotationClass)
            // 判断当前方法上是否有指定的注解。
            // 参数:注解的字节码文件对象
            // 返回值:布尔结果。true 存在 false 不存在
            if (method.isAnnotationPresent(Test.class)) {
                method.invoke(userTest);
            }
        }
    }
}
